package com.samuel.blog.service;

import com.github.pagehelper.PageInfo;
import com.samuel.blog.bean.PageBean;
import com.samuel.blog.entity.ArticleEntity;

import java.util.List;

/**
 * @author kaiji
 */
public interface ArticleService extends BaseService<ArticleEntity, String> {

	/**
	 * 通过作者id查询文章列表
	 * @param authorId
	 * 		作者主键
	 * @return	文章列表
	 */
	List<ArticleEntity> getByAuthorId(String authorId);

	/**
	 * 根据文章id修改批量修改文章
	 *
	 * @param articleList
	 * 		文章列表
	 * @return	true or false
	 */
	boolean updateBatchById(List<ArticleEntity> articleList);

	/**
	 * 保存文章
	 *
	 * @param article
	 * 		文章实体
	 * @return	0 or 1
	 */
	@Override
	int insert(ArticleEntity article);

	/**
	 * <p>
	 *	根据标签查询这个标签下的文章
	 * </p>
	 * @param tagId
	 * 		标签主键
	 * @return
	 * 		文章列表
	 */
	List<ArticleEntity> selectByTag(String tagId);

	/**
	 * <p>
	 *	根据标签查询这个标签下的文章(分页版本)
	 * </p>
	 * @param tagId
	 * 		标签主键
	 * @param pageBean
	 * 		分页信息对象
	 * @return
	 * 		文章列表
	 */
	PageInfo<ArticleEntity> selectPageByTag(PageBean pageBean, String tagId);

	/**
	 * 更新文章
	 *
	 * @param article
	 * 		文章类型
	 * @param tagIds
	 * 		标签主键列表
	 * @return 0 or 1
	 */
    int update(ArticleEntity article, List<String> tagIds);

	/**
	 * 保存文章
	 *
	 * @param article
	 * 		文章类型
	 * @param tagIds
	 * 		标签主键列表
	 * @return 0 or 1
	 */
	int save(ArticleEntity article, List<String> tagIds);
}
